class Solution(object):

    def maximumSwap(self, num):
        # 将数字转换为字符串
        num_str = str(num)
        # 记录每个数字最后一次出现的位置
        last = {int(d): i for i, d in enumerate(num_str)}
        # 从左到右遍历数字，找到可以交换的最大的数位i和数位j
        for i, d in enumerate(num_str):
            for j in range(9, int(d), -1):
                if j in last and last[j] > i:
                    # 找到可以交换的数位i和数位j后，交换两个数位并返回结果
                    num_list = list(num_str)
                    num_list[i], num_list[last[j]] = num_list[last[j]], num_list[i]
                    return int("".join(num_list))
        # 如果没有找到可以交换的数位i和数位j，则直接返回原数字
        return num




if __name__ == '__main__':
    print(Solution().maximumSwap(2736))